iOSをBLEマウスにするのあきらめていなかった


概要

Bluetooth 4.0iOSをマウスにするのには失敗した前回。

とりあえずMac側にサーバアプリ入れないと駄目だ、、死のう、、、


→あきらめてなかった。

本体を作り終わったら再開する。まず一度終わらせよう。


別の実装を探す準備

http://www.bluez.org/development/git/


自分のクソみたいな犯罪歴として、iPhone3GSくらいのころにBulletをタッチで動くように

書き直したことあるので、地獄のような移植作業には自信がある。


とりあえずBonjourでのアプリケーション側の実装を進めている。


iMousePadPre

https://github.com/sassembla/iMousePadPre



現在の通信方式

さっさと成果が欲しいので(というかモデリングしたいので)日和ってBonjourを使う。

ただし「同一wifi下にすべてのマシンが~」という条件からはどうにかして逃げ出す。



通信経路は以下のようになった。


・iPhoneでのBTテザリングあり

・iPadでiPhoneのBTテザリングを受ける

・MacでiPhoneのBTテザリングを受ける


この状態で、wifiとか付けなくてもMac-iPad間が接続される。

見てるか哲平、、、wifiなんていらなかったんや、、



避けた選択肢について、一応弁解しておくと、

・同一wifi内に全マシンがある場合はそれで良いんじゃない? →wifiでんち食うからキライ

→同一wifi内っていう条件が満たしにくい


・Macでwifi局作って接続すれば良いんじゃない?

→めんどいしいろんな事故のもとになるからヤダ


以上。いろんな場所であそびたい勢としてはwifiの単独ポータビリティの無さに殺意。



Bonjourでの実装

参考にしたQiitaの記事が簡潔。

あ、ただ開始時にport指定してるのがあんまり意味ないと思ったのでそこは変更した。


iOS と Mac OS X 間を Bonjour で通信してちょっと楽しげなこと

http://qiita.com/feb19/items/da07d96619acb933a3c3


差分

https://github.com/sassembla/iMousePadPre/blob/master/ServerPre/ServerPre/AppDelegate.m#L41


切断周りに何の対処もしてないのでそのへんあとでやる。



残りの実装

Bonjour経由での通信にBlocks使えるハンドラが出てるので、データの受け渡しは楽。


将来BLEのコード書き直した時用に出力 = iOS側を調整する必要があるけど、

その場合は出力側のみ変更すればいいので、データのコーディネートする箇所だけを

独立させておけば改修は簡単そう。

マウスのコードの参考

http://www.xappsoftware.com/wordpress/2013/07/08/how-to-simulate-mouse-movement-and-clicks-on-mac-os-x/


キーイベントの参考

http://ianyh.com/blog/2013/06/05/accessibility/


このへんのトリガーをNSDataに固めて受けて解答して着火、ってやればOK。

成果物がこちら。


iMousePadPre

https://github.com/sassembla/iMousePadPre